from django.db import models

# Create your models here.
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User

from article.models import Article

class Comment(models.Model):
  author = models.ForeignKey(
    User,
    null=True,
    on_delete=models.CASCADE,
    related_name='comments_author'
  )

  article = models.ForeignKey(
    Article,
    on_delete=models.CASCADE,
    related_name='comments'
  )
  # 一个父评论可以有多个子评论，而一个子评论只能有一个父评论，因此用了一对多外键。
  # 之前的一对多外键，第一个参数直接引用了对应的模型，但是由于语法规则限制，这里显然不能够自己引用自己，因此用了传递字符串 self 的方式，作用都是一样的。
  parent = models.ForeignKey(
    'self',
    null=True,
    blank=True,
    on_delete=models.SET_NULL,
    related_name='children'
  )

  content = models.TextField()
  created = models.DateTimeField(default=timezone.now)
  modified = models.DateTimeField(default=timezone.now)
  modifier = models.ForeignKey(
    User,
    null=True,
    on_delete=models.SET_NULL,
    related_name='comments_modifier'
  )

  class Meta:
    ordering = ['-created']
  
  def __str__(self):
    return self.content[:20]
